package com.ruoyi.system.xmlAbstract.dto;

import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Field;

/**
 * 相应数据
 * @author : anxinr
 * @date : 2023/1/30 16:48
 */
@Data
@ToString
public class FrontProcessorData {
    /**省市代码*/
    public String Prov ;
    /**账号*/
    public String AccNo ;
    /**货币码*/
    public String Cur ;
    /**交易日期*/
    public String TrDate ;
    /**交易时间*/
    public String TimeStab ;
    /**日志号*/
    public String TrJrn ;
    /**交易类型*/
    public String TrType ;
    /**交易行号*/
    public String TrBankNo ;
    /**户名*/
    public String AccName ;
    /**发生额标志*/
    public String AmtIndex ;
    /**对方账号省市代码*/
    public String OppProv ;
    /**对方账号*/
    public String OppAccNo ;
    /**对方账号货币码*/
    public String OppCur ;
    /**对方账号户名*/
    public String OppName ;
    /**对方账号开户行*/
    public String OppBkName ;
    /**现转标志*/
    public String CshIndex ;
    /**错账日期*/
    public String ErrDate ;
    /**错账传票号*/
    public String ErrVchNo ;
    /**交易金额*/
    public String Amt ;
    /**账户余额*/
    public String Bal ;
    /**上笔余额*/
    public String PreAmt ;
    /**手续费总额*/
    public String TotChg ;
    /**凭证种类*/
    public String VoucherType ;
    /**凭证省市代号*/
    public String VoucherProv ;
    /**凭证批次号*/
    public String VoucherBat ;
    /**凭证号*/
    public String VoucherNo ;
    /**客户参考号*/
    public String CustRef ;
    /**交易码*/
    public String TransCode ;
    /**柜员号*/
    public String Teller ;
    /**传票号*/
    public String VchNo ;
    /**摘要*/
    public String Abs ;
    /**附言*/
    public String PostScript ;
    /**交易来源*/
    public String TrFrom ;

    public String analysisInfo() throws IllegalAccessException {
        String info = "省市代码|账号|货币码|交易日期|交易时间|日志号|交易类型|交易行号|户名|发生额标志|对方账号省市代码|对方账号|对方账号货币码|对方账号户名|对方账号开户行|现转标志|错账日期|错账传票号|交易金额|账户余额|上笔余额|手续费总额|凭证种类|凭证省市代号|凭证批次号|凭证号|客户参考号|交易码|柜员号|传票号|摘要|附言|交易来源|" ;
        String[] split = info.split("\\|");
        StringBuilder sb = new StringBuilder();
        Field[] declaredFields = this.getClass().getDeclaredFields();
        for (int i = 0; i < declaredFields.length; i++) {
            declaredFields[i].setAccessible(true);
            String data = (String) declaredFields[i].get(this);
            sb.append(split[i]).append("(").append(declaredFields[i].getName()).append(")").append(":") ;
            if (StringUtils.isNotBlank(data)){
                sb.append(data).append("\n") ;
            }else {
                sb.append(" ").append("\n") ;
            }
        }
        return sb.toString() ;
    }
}

